home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 February / Macworld (1999-02).dmg / Games World / SharewareGames / Xconq 7.2.2 / lib / russian-rev.g < prev    next >
Text File  |  1998-05-22  |  12KB  |  515 lines

  1. (game-module "russian-rev"
  2.   (title "Russian Revolution")
  3.   (blurb "base module for the Russian Revolution")
  4.   (variants ; copied from standard.g
  5.     (world-seen false)
  6.     (see-all false)
  7.     (world-size (60 30 360))
  8.     ("Mostly Land" mostly-land
  9.       (true
  10.         (add sea alt-percentile-max 20)
  11.         (add shallows alt-percentile-min 20)
  12.         (add shallows alt-percentile-max 21)
  13.         (add swamp alt-percentile-min 21)
  14.         (add swamp alt-percentile-max 23)
  15.         (add (desert plains forest) alt-percentile-min 21)
  16.         ))
  17.     ("All Land" all-land
  18.       (true
  19.         (add sea alt-percentile-max 1)
  20.         (add shallows alt-percentile-min 1)
  21.         (add shallows alt-percentile-max 2)
  22.         (add swamp alt-percentile-min 2)
  23.         (add swamp alt-percentile-max 4)
  24.         (add (desert plains forest) alt-percentile-min 2)
  25.         ))
  26.     ("Large Countries" large
  27.      (true (set country-radius-max 100))
  28.      )
  29.     )
  30. )
  31.  
  32. (unit-type militia (image-name "fremen")
  33.   (help "cheap, weaker than infantry, good for patrol and exploration"))
  34. (unit-type infantry (image-name "soldiers")
  35.   (help "the backbone of the army, captures cities, makes forts"))
  36. (unit-type cavalry
  37.   (help "fast, explores and fights, good for exploration and reserve"))
  38. (unit-type police
  39.   (help "spies, fights terrorists, captures neutral troops"))
  40. (unit-type terrorist
  41.   (help "sneaks around, infiltrates, blows up things"))
  42.  
  43. (unit-type train (char "T")
  44.   (help "moves troops on land, very vulnerable"))
  45. (unit-type fleet (image-name "ca") (char "n")
  46.   (help "fights and carries troops on sea"))
  47.  
  48. (unit-type fort (image-name "walltown") (char "/")
  49.   (help "fort, port and canal"))
  50. (unit-type town (image-name "town20")  (char "*")
  51.   (help "smaller than a city"))
  52.  (unit-type city (image-name "city19") (char "@")
  53.   (help "main producer"))
  54.  
  55. (define m militia)
  56. (define i infantry)
  57. (define c cavalry)
  58. (define p police)
  59. (define t terrorist)
  60. (define T train)
  61. (define n fleet)
  62. (define / fort)
  63. (define * town)
  64. (define @ city)
  65.  
  66. (material-type fuel
  67.   (help "to move your trains and ships"))
  68. (material-type food
  69.   (help "to survive"))
  70. (material-type ammo
  71.   (help "to fight"))
  72.  
  73. (include "stdterr")
  74.  
  75. ;; to use "stdterr" as it stands:
  76. (add road name "railway")
  77. (add road image-name "road")
  78. (define railway road)
  79.  
  80. (define cities (* @))
  81. (define places (/ * @))
  82. (define troops (m i c))
  83. (define ground (m i c p t))
  84. (define movers (m i c p t T n))
  85. (define water (sea shallows))
  86. (define land (swamp plains forest desert mountains))
  87. (define dry-land (desert plains forest mountains)) ; same as land-t*
  88.  
  89. ;;; Static relationships.
  90.  
  91. (table vanishes-on
  92.   (ground water true)
  93.   (places (sea shallows swamp) true)
  94.   (n land true)
  95.   (n railway true)
  96.   (u* ice true)
  97.   (T t* true)
  98.   (T railway false)
  99.   )
  100.  
  101. ;; Unit-unit capacities.
  102.  
  103. (table unit-size-as-occupant
  104.   (u* u* 500)
  105. ;             m i c p t T  n
  106.   (movers u* (1 2 2 1 1 6 15))
  107.   )
  108.  
  109. (add (T n / * @) capacity (4 10 20 100 200))
  110.  
  111. (table occupant-max
  112.   (u* u* 100)
  113.   )
  114.  
  115. (table road-chance
  116.   (town (town city) ( 1  5))
  117.   (city (town city) (10 90))
  118.   )
  119.  
  120. ;;; Unit-terrain capacities.
  121.  
  122. ;; Limit units from 4 to 16 in one cell.
  123. ;;  Places cover the entire cell, however.
  124.   
  125. (table unit-size-in-terrain
  126.   (m t* 2)
  127.   ((i c n T) t* 4)
  128.   ((p t) t* 1)
  129.   (places t* 16)
  130.   )
  131.  
  132. (add t* capacity 16)
  133. (add railway capacity 4)
  134.  
  135. (table terrain-capacity-x (T railway 2))
  136.  
  137. ;;; Unit-material capacities.
  138.  
  139. (table unit-storage-x
  140. ;            m  i  c p t  T   n   /   *   @
  141.   (u* food ( 5  8 15 8 4 50 200 200 400 800))
  142.   (u* fuel ( 0  0  0 0 0 50 200 200 400 800))
  143.   (u* ammo ( 5 10 10 3 1 25 100 100 200 400))
  144. )
  145.  
  146. ;; A game's starting units will be full by default.
  147. (table unit-initial-supply (u* m* 9999))
  148.  
  149. ;;; Vision.
  150.  
  151. (add places already-seen 100)
  152.  
  153. (add cities see-always true)
  154.  
  155. (table visibility
  156.   (u* t* 100)
  157.   (t t* 10)
  158.   (t (mountains forest) 1)
  159. )
  160. ;                    m i c p t T n / *  @
  161. (add u* stack-order (3 4 5 2 1 6 7 8 9 10))
  162.  
  163. ;;; Actions.
  164.  
  165. ;                      m  i  c  p  t  T  n  /  *  @
  166. (add u* acp-per-turn ( 2  2  4  2  2  6  4  1  1  1))
  167. (add movers acp-min  (-1 -1 -2 -1 -1 -3 -2))
  168.  
  169. ;;; Movement.
  170.  
  171. (add places speed 0)
  172. (add movers speed 100)
  173.  
  174. ;(table mp-to-enter-unit
  175. ;   (u* u* 1)
  176. ;   (T n 6)
  177. ;)
  178. ; the above don't seem to work properly...
  179. (table mp-to-enter-unit
  180.    (u* u* 0)
  181. )
  182.  
  183. (table mp-to-enter-terrain 
  184.   (u* t* 99)
  185.   (ground (plains desert) 1)
  186.   (ground (forest mountains) 2)
  187.   (n water (1 2))
  188.   (c (forest mountains) (3 4))
  189.   ((m p t) swamp 2)
  190.   (movers railway 0)
  191. ;                m i c p t T n 
  192.   (movers river (2 2 4 2 2 6 1))
  193. ;                          ^
  194. ; should be 99, but then trains can't cross rivers even on bridges
  195. )
  196. (table mp-to-traverse
  197.   (movers river 99)
  198.   (n river 2)
  199.   (movers railway 1)
  200.   ((c n) railway (2 99))
  201. )
  202.  
  203. (table material-to-move ((n T) fuel 1))
  204. (table consumption-per-move ((n T) fuel 1))
  205.  
  206. ;;; Construction.
  207.  
  208. ;           m  i  c  p  t  T  n  / * @
  209. (add u* cp (8 12 20 20 16 16 34 12 1 1))
  210. (table acp-to-create
  211.   (troops / (2 2 4))
  212.   (cities movers 1)
  213.   )
  214. (table cp-on-creation
  215.   (troops / 1)
  216.   (* movers 1)
  217.   (@ movers 2)
  218.   )
  219. (table acp-to-build
  220.   (troops / (2 2 4))
  221.   (cities movers 1)
  222.   )
  223. (table cp-per-build
  224.   (troops / (1 2 1))
  225.   (* movers 1)
  226.   (@ movers 2)
  227.   )
  228. (table occupant-can-construct
  229.   (u* u* false)
  230.   )
  231.  
  232. ;(define constr (i c p t  T  n))
  233. ;(table tp-to-build
  234. ;     (* constr (8 8 6 6 20 20))
  235. ;     (@ constr (4 4 3 3 10 10))
  236. ;)
  237. ;(table acp-to-toolup (cities constr 1))
  238. ;(table tp-per-toolup (cities constr 1))
  239. ;(table tp-max        (cities constr 100))
  240. ; the above make construction of i c p t T n impossible
  241.  
  242. ;;; Repair.
  243.  
  244. ;; Automatic repair work.
  245. (add (  m    i    c    n    /    *    @ ) hp-recovery 
  246.      (0.25 0.50 0.25 0.50 0.25 0.50 1.00)
  247. )
  248.  
  249. ;;; Explicit repair actions accelerate the recovery of lost hp.
  250.  
  251. (table acp-to-repair
  252.   (places u* 1)
  253.   (n movers 1)
  254.   ((m i) places 1)
  255. )
  256. (table hp-per-repair
  257.   (/ u* 0.50)
  258.   (cities u* 1.00)
  259.   (n ground 0.50)
  260.   (n n 0.50)
  261.   (i places 1.00)
  262.   (m places 0.50)
  263. )
  264.  
  265. ;;; Production.
  266.  
  267. (table base-production
  268.   (ground food 1)
  269.   (c food 2)
  270. ; until troop to get food from terrain
  271.   (places fuel (10 20 40))
  272.   (places food (10 20 40))
  273.   (places ammo ( 5 10 20))
  274. )
  275. (table productivity
  276.   (u* t* 0)
  277.   (ground (plains forest) 100)
  278.   (c forest 50)
  279.   (/ dry-land (100 50 30 30))
  280.   (* dry-land (100 50 30 30))
  281.   (@ dry-land (100 50 30 30))
  282. )
  283. ; the above does not work :-)
  284.  
  285. ; (table terrain-storage-x ((forest plains) food (3 12)))
  286. ; (table terrain-initial-supply ((forest plains) food (3 12)))
  287. ; (table terrain-base-production ((forest plains) food (1 3)))
  288. ; but then no way for troop to get food from terrain
  289.  
  290. (table base-consumption
  291.   (movers food 1)
  292.   ((c T) food (2 0))
  293. )
  294. (table hp-per-starve
  295.   (movers food 0.5)
  296. )
  297.  
  298. ;;; Combat.
  299.  
  300. ;                        m i c p t T n /  *  @
  301. (add u* hp-max          (2 3 2 2 1 1 8 5 10 25))
  302. ;(add u* hp-at-min-speed(0 0 0 1 0 0 2 1  3  5)) ; broken?
  303.  
  304. (table hit-chance
  305. ;         m  i  c  p  t  T  n  /  *  @
  306.   (m u* (70 50 40 50 50 50 10 30 25 15))
  307.   (i u* (80 70 50 80 75 70 20 50 40 30))
  308.   (c u* (80 60 80 80 80 60 00 30 20 10))
  309.   (p u* (40 30 30 50 75 40 00 05 20 10))
  310.   (t u* (40 30 10 10 75 40 20 40 60 50))
  311.   (T u* 0)
  312.   (n u* (60 50 30 60 30 70 60 60 70 80))
  313.   (/ u* (60 50 60 60 10 30 10 00 00 00))
  314.   (* u* (40 35 40 50 05 40 20 00 00 00))
  315.   (@ u* (60 50 60 70 05 50 30 00 00 00))
  316. )
  317.  
  318. (table damage
  319.   (u* u* 1)
  320. ;         m i c p t T n / * @
  321.   (t u* ( 2 3 2 1 1 1 2 5 5 9 ))
  322.   (n u* ( 2 2 2 2 1 1 2 2 3 4 ))
  323. )
  324. ; does the above really work?
  325.  
  326. (table capture-chance
  327.   ((m i c) T (30 50 40))
  328.   (m places (10 20 15))
  329.   (i places (20 40 30))
  330.   (c places ( 5 20 15))
  331. )
  332.  
  333. (table independent-capture-chance
  334.   (p movers 50) 
  335.   (p (p t) 0)
  336.   ((m i c) T (60 90 70))
  337.   (m places (20 40 30))
  338.   (i places (40 75 60))
  339.   (c places (10 40 30))
  340.   (i n 30)
  341. )
  342.  
  343. (table ferry-on-entry
  344.    (u* u* over-own)
  345.    (n movers over-border)
  346. )
  347. (table ferry-on-departure
  348.    (u* u* over-own)
  349.    (n movers over-border)
  350. )
  351. (table bridge (i places true) (p movers true))
  352.  
  353. (table protection 
  354.   (/ movers 80)
  355.   (* movers 65)
  356.   (@ movers 50)
  357.   (i places (70 80 80))
  358.   ((m c) places 90)
  359. )
  360.  
  361. (table consumption-per-attack (u* ammo 1))
  362. (table hit-by (u* ammo 1))
  363.  
  364. (table acp-to-attack
  365.   (m u* 2)
  366.   (i u* 2)
  367.   (c u* 4)
  368.   (p u* 2)
  369.   (t u* 1)
  370.   (n u* 1)
  371. )
  372.  
  373. ;;; Revolt & surrender.
  374.  
  375. (table surrender-range (u* u* 1))
  376.  
  377. (table defend-terrain-effect
  378.    ((m i) mountains (80 90))
  379.    ((m i) forest (90 95))
  380.    (/ mountains 80)
  381.    (n shallows 150)
  382. )
  383.  
  384. ; this is a civil war:  everybody revolts and turns coat
  385. (add u* acp-to-change-side 1)
  386. ; excluding politically-aware units
  387. (add (p t) acp-to-change-side 0)
  388.  
  389. (add places revolt-chance 0.50)
  390. (add movers revolt-chance 0.15)
  391. (add (p t) revolt-chance 0.00)
  392. (add m revolt-chance 0.30)
  393.  
  394. (table surrender-chance
  395.   (m u* 1.00)
  396.   (u* u* 0.50)
  397.   ((i c @) u* 0.20)
  398.   (/ u* 0.10)
  399.   (n u* 0.05)
  400.   ((p t) u* 0.00)
  401.   (t p 0.10)
  402.   (u* (t /) 0)
  403. )
  404.  
  405. (add p possible-sides '(not "independent"))
  406. (add t possible-sides '(not "independent"))
  407.  
  408. (table can-enter-independent (t (T * @) true))
  409. ; should be able to enter even hostile units!
  410.  
  411. ;;; Spying.
  412.  
  413. (add p spy-chance 25.00)
  414. (add p spy-range 2)
  415.  
  416. ;;; Accidents.
  417.  
  418. (table attrition
  419.   (n shallows 4.00)
  420.   (troops swamp 5.00)
  421.   (c (mountains forest desert) (2.00 1.00 1.00))
  422. )
  423.  
  424. ;;; Scoring.
  425.  
  426. (add u* point-value 0)
  427. (add (i c / * @) point-value (1 1 1 10 30))
  428.  
  429. ;;; Initial setup.
  430.  
  431. (table favored-terrain
  432.   (n water (100 20))
  433.   (ground plains 100)
  434.   (ground forest 20)
  435.   (t (plains forest) (50 100))
  436. ;               ~   +  %  ^
  437.   (/ dry-land (20 100 10 20))
  438.   (@ dry-land (25 100 10 10))
  439.   (* dry-land (40 100 20 20))
  440. )
  441.  
  442. (table independent-density add (places t* (10 100 30)))
  443.  
  444. (add @ start-with 1)
  445. (add * independent-near-start 3)
  446. (set country-separation-min 12)
  447. (set country-separation-max 60)
  448. (set country-radius-min 4)
  449.  
  450. ;; Naming.
  451.  
  452. (include "town-names")
  453. (add places namer "random-town-names")
  454.  
  455. ;; Sides.
  456.  
  457. (set sides-min 2)
  458. (scorekeeper (do last-side-wins)) ; for now
  459.  
  460. (set side-library '(
  461. ; ------------ parties
  462.   ((noun "Bolshevik") (color "red") (emblem-name "hammer-and-sickle"))
  463.   ((noun "Red") (color "red") (emblem-name "soviet-star"))
  464.   ((noun "Menshevik") (color "black,pink"))
  465.   ((noun "Tzarist") (color "blue") (emblem-name "arms-russia"))
  466.   ((noun "White") (color "white,black") (emblem-name "arms-russia"))
  467. ; ------------ peoples
  468.   ((noun "Russian") (color "blue,red")
  469.                     (emblem-name "flag-russia"))
  470.   ((noun "Ukrainian") (color "yellow,blue")
  471.                       (emblem-name "flag-ukraine"))
  472.   ((noun "Georgian") (emblem-name "flag-georgia"))
  473.   ((noun "Azer") (emblem-name "flag-azerbaijan"))
  474.   ((noun "Armenian") (emblem-name "flag-armenia"))
  475.   ((noun "Cossack") (color "white,blue"))
  476. ; ------------ foreign powers
  477.   ((noun "Polish") (color "white,red") (emblem-name "flag-poland"))
  478.   ((noun "Czechoslovak") (color "red,blue")
  479.                          (emblem-name "flag-czech"))
  480.   ((noun "German") (color "gray,black,white")
  481.                    (emblem-name "german-cross"))
  482.   ((noun "Turkish") (emblem-name "crescent"))
  483.   ((noun "Japanese") (color "red,white,black")
  484.                      (emblem-name "flag-japan"))
  485. ; ((noun "Chinese") (color "red,yellow") (emblem-name "flag-dragon")) 
  486. ))
  487.  
  488.  
  489. (game-module (design-notes (
  490.   "Massimo Campostrini <campo@mailbox.difi.unipi.it>."
  491.   ""
  492.   "Tooling up does not work, so it is commented out."
  493.   ""
  494.   "Troops seem to be unable to collect food from terrain,"
  495.   "so terrain-storage-x and friends are commented out"
  496.   "and troops make their own food."
  497.   ""
  498.   "Police is supposed to be able to capture neutral troops;"
  499.   "need to implement this in Xconq 7.0"
  500. )))
  501. (game-module (notes (
  502.   "This games tries to model Russia at the time of the Revolution."
  503.   ""
  504.   "About 60% of your production should be infantry",
  505.   ""
  506.   "Trains can move your troops around fast,"
  507.   "but they should never get close to the front."
  508.   ""
  509.   "Terrorists should infiltrate enemy territory"
  510.   "and blow up trains and other things."
  511.   "Police should try to avoid this."
  512.   ""
  513.   "A fort can be built to block a railway."
  514. )))
  515.